<?php
namespace app\admin\model;

use think\Exception;
use think\Log;
use think\Model;
use think\Db;

class AuthRule extends Model
{
    /**
     * 菜单管理列表
     * @author wcy
     * @version 2017年4月18日09:47:26
     */
    public function menuList($start,$length,$search){
        try{
            $where=" a.ppid=0";
            if(!empty($search)){
                $where=$where." and a.name like '%$search%'";
            }
            $data=Db::table("think_auth_rule")->alias("a")
                ->field("b.name f_name,a.*")
                ->join("think_auth_rule b","b.id=a.pid","left")
                ->where($where)
                ->limit($start,$length)
                ->select();
            $count=Db::table("think_auth_rule")->alias("a")->where($where)->count();
            return array("data"=>$data,"count"=>$count);
        }catch (Exception $e){
            Log::record($e->getMessage());
            return false;
        }
    }
    /**
     * 添加菜单
     * @author wcy
     * @version 2017年4月18日09:47:26
     */
    public function addMenu($data){
        try{
            $res=Db::table("think_auth_rule")->insert($data);
            return $res;
        }catch (Exception $e){
            Log::record($e->getMessage());
            return false;
        }
    }

    /**
     * 删除菜单
     * @author wcy
     * @version 2017年4月18日11:22:49
     */
    public function delMenu($id){
        try{
            $res=Db::table("think_auth_rule")->where("id",$id)->delete();
            return $res;
        }catch (Exception $e){
            Log::record($e->getMessage());
            return false;
        }
    }
    /**
     * 获取菜单信息
     * @author wcy
     * @version 2017年4月18日11:22:49
     */
    public function getMenuById($id){
        try{
            $data=Db::table("think_auth_rule")->where("id",$id)->find();
            return $data;
        }catch (Exception $e){
            Log::record($e->getMessage());
            return false;
        }
    }
    /**
     * 修改菜单信息
     * @author wcy
     * @version 2017年4月18日11:22:49
     */
    public function  editMenu($id,$data){
        try{
            $res=Db::table("think_auth_rule")->where("id",$id)->setField($data);
            return $res;
        }catch (Exception $e){
            Log::record($e->getMessage());
            return false;
        }
    }
    /**
     * 获取顶级菜单
     * @author wcy
     * @version 2017年4月18日15:53:13
     */
    public function getPmenu(){
        try{
            $data=Db::table("think_auth_rule")->where("pid",0)->select();
            return $data;
        }catch (Exception $e){
            Log::record($e->getMessage());
            return false;
        }
    }
    /**
     * 获取子菜单
     * @author wcy
     * @version 2017年4月18日15:53:13
     */
    public function getZMenuById($id){
        try{
            $data=Db::table("think_auth_rule")->where("pid=$id and ppid=0")->select();
            return $data;
        }catch (Exception $e){
            Log::record($e->getMessage());
            return false;
        }
    }
    /**
     * 权限列表
     * @author wcy
     * @version 2017年4月19日14:25:13
     */
    public function permissionList($search,$start,$length){
        try{
            $where=" a.ppid!=0";
            if(!empty($search)){
                $where=$where." and b.name like '%$search%' or a.name like '%$search%'";
            }
            $data=Db::table("think_auth_rule")->alias("a")->field("a.id,b.`name` b_name ,a.`name` a_name ,a.href")
                ->join("think_auth_rule b","a.ppid=b.id","left")
                ->where($where)->limit($start,$length)->select();
            $count=Db::table("think_auth_rule")->alias("a")
                ->join("think_auth_rule b","a.ppid=b.id","left")
                ->where($where)->count();
            return array("data"=>$data,"count"=>$count);
        }catch (Exception $e){
            Log::record($e->getMessage());
            return false;
        }
    }
    /**
     * 获取权限
     * @author wcy
     * @version 2017年4月19日17:25:21
     */
    public function getRuleAll(){
        try{
            $data=Db::table("think_auth_rule")->select();
            return $data;
        }catch (Exception $e){
            Log::record($e->getMessage());
            return false;
        }
    }
    /**
     * 检查菜单名称是否重复
     * @author wcy
     * @version 2017年4月21日14:54:47
     */
    public function getMenuName($id,$name){
        try{
            $where="name = '$name'";
            if(!empty($id)){
                $where=$where." and id!=$id";
            }
            $count=Db::table("think_auth_rule")->where($where)->count();
            return $count;
        }catch (Exception $e){
            Log::record($e->getMessage());
            return 1;
        }
    }

    /**
     *判断是否有权限查看
     * @author wcy
     * @version 2017年4月26日10:29:44
     */
    public function getRuleHref($href,$id){
        try{
            $count=  Db::table("think_auth_group")
                ->join("`user`","think_auth_group.id=`user`.group_id and `user`.id=$id")
                ->where("think_auth_group.rules in(SELECT id from think_auth_rule WHERE href='$href')")
                ->count();
            return $count;
        }catch (Exception $e){
            Log::record($e->getMessage());
            return false;
        }
    }
}